% Copyright 2011-2015 David Hadka.  All Rights Reserved.
%
% This file is part of the MOEA Framework User Manual.
%
% Permission is granted to copy, distribute and/or modify this document under
% the terms of the GNU Free Documentation License, Version 1.3 or any later
% version published by the Free Software Foundation; with the Invariant Section
% being the section entitled "Preface", no Front-Cover Texts, and no Back-Cover
% Texts.  A copy of the license is included in the section entitled "GNU Free
% Documentation License".

\chapter{Errors and Warning Messages}
\label{chpt:errors}

This chapter provides a comprehensive list of errors and warning messages that may be encountered when using the MOEA Framework.  The error or warning message is shown in \textit{italic text}, followed by details and possible fixes for the issue.

\section{Errors}
Errors halt the execution of the program and produce an error message to the standard error stream (i.e., the console).  Most errors can be corrected by the user.
\vspace{\baselineskip}

\noindent
\textit{Exception in thread "main" java.lang.NoClassDefFoundError: \plaintext{<class>}}
\begin{indented}
  Thrown when Java is starting but is unable to find the specified class.  Ensure the specified class is located on the Java classpath.  If the class is located in a JAR file, use
  \begin{indented}
    \plaintext{java -classpath "\$CLASSPATH:/path/to/library.jar" ...}
  \end{indented}
  If the class is an individual .class file in a folder, use
  \begin{indented}
    \plaintext{java -classpath "\$CLASSPATH:/path/to/folder/"}
  \end{indented}
  Also ensure you are using the correct classpath separator.  Linux users will use the colon (:) as the above examples demonstrate.  Windows and Cygwin users should use the
  semi-colon (;).
\end{indented}

\noindent
\textit{Error occurred during initialization of VM} or\\
\textit{Too small initial heap for new size specified}
\begin{indented}
  This Java error occurs when the initial heap size (allocated memory) is too small to instantiate the Java virtual machine (VM).  This error is likely caused by the \plaintext{-Xmx} command line option requesting less memory than is necessary to start the VM.  Increasing the \plaintext{-Xmx} value may resolve this issue. Also ensure the \plaintext{-Xmx} argument is properly formatted.  For instance, use \plaintext{-Xmx128m} and NOT \plaintext{-Xmx128}.
\end{indented}

\noindent
\textit{Error occurred during initialization of VM} or\\
\textit{Could not reserve enough space for object heap} or\\
\textit{Could not create the Java virtual machine}
\begin{indented}
  This Java error occurs when there is insufficient heap size (allocated memory) to instantiate the Java virtual machine (VM).  This error is likely caused by the \plaintext{-Xmx} command line option requesting more memory than is available on the host system.  This error may also occur if other running processes consume large quantities of memory.  Lowering the \plaintext{-Xmx} value may resolve this issue.
\end{indented}

\noindent
\textit{Exception in thread ``main'' java.lang.OutOfMemoryError: GC overhead limit exceeded}
\begin{indented}
  Java relies on a garbage collector to detect and free memory which is no longer in use.  This process is usually fast.  However, if Java determines it is spending too much time performing garbage collection (98\% of the time) and is only recovering a small amount of memory (2\% of the heap), this error is thrown.  This is likely caused when the in-use memory approaches the maximum heap size, leaving little unallocated memory for temporary objects.  Try  increasing the maximum heap size with the \plaintext{-Xmx} command line argument.
\end{indented}

\noindent
\textit{Assertion failed: fp != NULL, file \plaintext{<filename>}, line \plaintext{<linenumber>}}
\begin{indented}
  PISA modules communicate using the file system.  Some anti-virus software scans the contents of files before read and after write operations.  This may cause one of the PISA communication files to become inaccessible and cause this error.  To test if this is the cause, try disabling your anti-virus and re-run the program.
  
  A more permanent and secure solution involves adding an exception to the anti-virus software to prevent active monitoring of PISA communication files. For example, first add the line
  \begin{indented}
    \plaintext{java.io.tmpdir=<folder>}
  \end{indented}
  to \file{global.properties} and set \plaintext{<folder>} to some temporary folder where the PISA communication files will be stored.  Then configure your anti-virus software to ignore the contents of \plaintext{<folder>}.
\end{indented}

\noindent
\textit{problem does not have an analytical solution}
\begin{indented}
  Attempted to use \java{SetGenerator} to produce a reference set for a problem which does not implement \java{AnalyticalProblem}.  Only \java{AnalyticalProblem}s, which provide a method for generating Pareto optimal solutions, can be used with \java{SetGenerator}.
\end{indented}

\noindent
\textit{input appears to be newer than output}
\begin{indented}
  Several of the command line utilities read entries in an input file and write the corresponding outputs to a separate output file.  If the last modified date on the input file is newer than the date on the output file, this exception is thrown.  This suggests that the input file has been modified unexpectedly, and attempting to resume with a partially evaluated output file may result in incorrect results.  To resolve:
  \begin{enumerate}
    \item If the input file is unchanged, use the \plaintext{--force} command line option to override this check.
    \item If the input file is changed, delete the output file and restart evaluation from the beginning.
  \end{enumerate}
\end{indented}

\noindent
\textit{no reference set available}
\begin{indented}
  Several of the command line utilities require a reference set.  The reference set either is provided by the problem (through the \java{ProblemProvider}), or supplied by the user via a command line argument.  This exception occurs if neither approach provides a reference set.
\end{indented}

\noindent
\textit{unable to load reference set}
\begin{indented}
  Indicates that a reference set is specified, but it could not be loaded. The error message should contain additional information about the underlying cause for the load failure.
\end{indented}

\noindent
\textit{output has more entries than input}
\begin{indented}
  Thrown by the \java{Evaluator} or \java{ResultFileEvaluator} command line utilities when attempting to resume evaluation of a partially evaluated file, but the output file contains more entries than the input file.  This implies the input file was either modified, or a different input file was supplied than originally used to produce the output file.  Unless the original input file is found, do not attempt to recover from this exception.  Delete the output file and restart evaluation from the beginning.
\end{indented}

\noindent
\textit{maxEvaluations not defined}
\begin{indented}
  Thrown by the \java{Evaluator} command line utility if the \plaintext{maxEvaluations} property has not been defined.  This property must either be defined in the parameter input file or through the \plaintext{-x maxEvaluations=<value>} command line argument.
\end{indented}

\noindent
\textit{unsupported decision variable type}
\begin{indented}
  Thrown when the user attempts to use an algorithm that does not support the given problem's decision variable encoding.  For instance, GDE3 only supports real-valued encodings, and will throw this exception if binary or permutation encoded problems are provided.
\end{indented}

\noindent
\textit{not enough bits} or\\
\textit{not enough dimensions}
\begin{indented}
  The Sobol sequence generator supports up to $21000$ dimensions and can produce up to $2147483647$ samples ($2^{31}-1$).  While unlikely, if either of these two limits are exceeded, these exceptions are thrown.
\end{indented}

\noindent
\textit{invalid number of parents}
\begin{indented}
  Attempting to use \java{CompoundVariation} in a manner inconsistent with its API specification will result in this exception.  Refer to the API documentation and the restrictions on the number of parents for a variation operator.
\end{indented}

\noindent
\textit{binary variables not same length} or\\
\textit{permutations not same size}
\begin{indented}
  Thrown by variation operators which require binary variables or permutations of equal length, but the supplied variables differ in length.
\end{indented}

\noindent  
\textit{invalid bit string}
\begin{indented}
  Thrown by \java{ResultFileReader} if either of the following two cases occurs:
  \begin{enumerate}
    \item The binary variable length differs from that specified in the problem definition.
    \item The string encoding in the file contains invalid characters.
  \end{enumerate}
  In either case, the binary variable stored in the result file could not be read.
\end{indented}

\noindent  
\textit{invalid permutation}
\begin{indented}
  Thrown by \java{ResultFileReader} if either of the following two cases occurs: 1) the permutation length differs from that specified in the problem definition; and 2) the string encoding in the file does not represent a valid permutation.  In either case, the permutation stored in the result file could not be read.
\end{indented}

\noindent
\textit{no provider for \plaintext{<name>}}
\begin{indented}
  Thrown by the service provider interface (org.moeaframework.core.spi) codes when no provider for the requested service is available.  Check the following:
  \begin{enumerate}
    \item If a nested exception is reported, the nested exception will identify the failure.
    \item Ensure \plaintext{<name>} is in fact provided by a built-in or third-party provider. Check spelling and case sensitivity.
    \item If \plaintext{<name>} is supplied by a third-party provider, ensure the provider is located on the Java classpath.  If the provider is in a JAR file, use
      \begin{indented}
        \plaintext{java -classpath "\$CLASSPATH:/path/to/provider.jar" ...}
      \end{indented}
      If the provider is supplied as class files in a folder, use
      \begin{indented}
        \plaintext{java -classpath "\$CLASSPATH:/path/to/folder/"}
      \end{indented}
      Also ensure you are using the correct classpath separator.  Linux users will use the colon (:) as the above examples demonstrate.  Windows and Cygwin users should use the
      semi-colon (;).
  \end{enumerate}
\end{indented}

\noindent
\textit{error sending variables to external process} or\\
\textit{error receiving variables from external process}
\begin{indented}
  Thrown when communicating with an external problem, but an I/O error occurred that disrupted the communication.  Numerous situations may cause this exception, such as the external process terminating unexpectedly.
\end{indented}

\noindent
\textit{end of stream reached when response expected}
\begin{indented}
  Thrown when communicating with an external process, but the connection to the external process closed.  This is most likely the result of an error on the external process side which caused the external process to terminate unexpectedly.  Error messages printed to the standard error stream should appear in the Java error stream.
\end{indented}

\noindent
\textit{response contained fewer tokens than expected}
\begin{indented}
  Thrown when communicating with an external problem, and the external process has returned an unexpected number of entries.  This is most likely a configuration error where the defined number of objectives or constraints differs from what is actually returned by the external process.
\end{indented}

\noindent
\textit{unable to serialize variable}
\begin{indented}
  Attempted to serialize a decision variable to send to an external problem, but the decision variable is not one of the supported types.  Only real variables are supported.
\end{indented}

\noindent
\textit{restart not supported}
\begin{indented}
  PISA supports the ability to reuse a selector after a run has completed. The MOEA Framework currently does not support this feature.  This exception is thrown if the PISA selector attempts to reset.
\end{indented}

\noindent
\textit{expected END on last line} or\\
\textit{unexpected end of file} or\\
\textit{invalid selection length}
\begin{indented}
  These exceptions are thrown when communicating with PISA processes, and the files produced by the PISA process appear to be incomplete or malformed. Check the implementation of the PISA codes to ensure they follow the correct protocol and syntax.
\end{indented}

\noindent
\textit{invalid variation length}
\begin{indented}
  This exception is caused by an incorrect configuration of PISA.  The following equality must hold
  \begin{equation*}
    children * (mu / parents) = lambda,
  \end{equation*}
  where mu is the number of parents selected by the PISA process, parents is the number of parent solutions required by the variation operator, children is the number of offspring produced by a single invocation of the variation operator, and lambda is the total number of offspring produced during a generation.
\end{indented}

\noindent
\textit{no digest file}
\begin{indented}
  Thrown when attempting to validate a data file using a digest file, but no such digest file exists.  Processing of the data file should cease immediately for sensitive applications where data integrity is essential. If the digest file simply hasn't yet been produced but the file contents are verified, the FileProtection command line utility can optionally generate digest files.
\end{indented}
  
\noindent
\textit{invalid digest file}
\begin{indented}
  Thrown when attempting to validate a date file using a digest file, but the digest file is corrupted or does not contain a valid digest.  Processing of the data file should cease immediately for sensitive applications where data integrity is essential.
\end{indented}

\noindent
\textit{digest does not match}
\begin{indented}
  Thrown when attempting to validate a data file using a digest file, but the actual digest of the data file does not match the expected digest contained in the digest file.  This indicates that the data file or the digest file are corrupted.  Processing of the data file should cease immediately for sensitive applications where data integrity is essential.
\end{indented}
  
\noindent
\textit{unexpected rule separator} or\\
\textit{rule must contain at least one production} or\\
\textit{invalid symbol} or\\
\textit{rule must start with non-terminal} or\\
\textit{rule must contain at least one production} or\\
\textit{codon array is empty}
\begin{indented}
  Each of these exceptions originates in the grammatical evolution code, and indicate specific errors when loading or processing a context free grammar. The specific error message details the cause.
\end{indented}

\noindent
\textit{unable to mkdir <directory>}
\begin{indented}
  For an unknown reason, the underlying operating system was unable to create a directory.  Check to ensure the location of the directory is writable.  One may also manually create the directory.
\end{indented}
  
\noindent
\textit{no scripting engine for extension <ext>}
\begin{indented}
  Attempted to use the Java Scripting APIs, but no engine for the specified file extension could be found.  To resolve:
  \begin{enumerate}
    \item Check that the extension is valid.  If not, supply the file extension for the scripting language required.
    \item Ensure the scripting language engine is listed on the classpath.  The engine, if packaged in a JAR, can be specified with
      \begin{indented}
        \plaintext{java -classpath "\$CLASSPATH:/path/to/engine.jar"}
      \end{indented}
      Also ensure you are using the correct classpath separator.  Linux users will use the colon (:) as the above example demonstrates.  Windows and Cygwin users should use the
      semi-colon (;).
  \end{enumerate}
\end{indented}

\noindent
\textit{no scripting engine for <name>}
\begin{indented}
  Attempted to use the Java Scripting APIs, but no engine with the specified name was found.
  \begin{enumerate}
    \item Check that the name is valid.  If not, supply the correct name for the scripting language engine as required.
    \item Ensure the scripting language engine is listed on the classpath.  The engine, if packaged in a JAR, can be specified with
      \begin{indented}
        \plaintext{java -classpath "\$CLASSPATH:/path/to/engine.jar"}
      \end{indented}
      Also ensure you are using the correct classpath separator.  Linux users will use the colon (:) as the above example demonstrates.  Windows and Cygwin users should use the
      semi-colon (;).
  \end{enumerate}
\end{indented}

\noindent
\textit{file has no extension}
\begin{indented}
  Attempted to use a script file with \java{ScriptedProblem}, but the filename does not contain a valid extension.  Either supply the file extension for the scripting language required, or use the constructor which accepts the engine name as an argument.
\end{indented}

\noindent
\textit{scripting engine not invocable}
\begin{indented}
  Thrown when using a scripting language engine which does not implement the \java{Invocable} interface.  The scripting language does not support methods or functions, and thus can not be used as intended.
\end{indented}
  
\noindent
\textit{requires two or more groups}
\begin{indented}
  Attempted to use one of the n-ary statistical tests which require at least two groups.  Either add a second group to compare against, or remove the statistical test.
\end{indented}
  
\noindent
\textit{could not locate resource <name>}
\begin{indented}
  Thrown when attempting to access a resource packages within the MOEA Framework, but the resource could not be located.  This is an error with the distribution.  Please contact the distributor to correct this issue.
\end{indented}
  
\noindent
\textit{insufficient number of entries in row}
\begin{indented}
  Attempted to read a data file, but the row was missing one or more entries. The exact meaning depends on the specific data file, but generally this error means the file is incomplete, improperly formatted or corrupted.  See the documentation on the various file types to determine if this error can be corrected.
\end{indented}
  
\noindent
\textit{invalid entry in row}
\begin{indented}
  Attempted to read a data file, but an entry was not formatted correctly. See the documentation on the various file types to determine if this error can be corrected.
\end{indented}

\noindent
\textit{invoke calculate prior to getting indicator values}
\begin{indented}
  Attempted to retrieve one of the indicator values prior to invoking the calculate method.  When using \java{QualityIndicator}, the calculate method must be invoked prior to retrieving any of the indicator values.
\end{indented}

\noindent
\textit{not a real variable} or\\
\textit{not a binary variable} or\\
\textit{not a boolean variable} or\\
\textit{not a permutation}
\begin{indented}
  The \java{EncodingUtils} class handles all the type checking internally.  If any of the arguments are not of the expected type, one of these exceptions is thrown.  Ensure the argument is of the expected type.  For example, ensure variable is a \java{BinaryVariable} when calling \java{EncodingUtils.asBinary(variable)}.
\end{indented}

\noindent
\textit{invalid number of values} or\\
\textit{invalid number of bits}
\begin{indented}
  Attempted to set the decision variable values using an array, but the number of elements in the array does not match the required number of elements. For \java{EncodingUtils.setReal} and \java{EncodingUtils.setInt}, ensure the number of real-valued/integer-valued decision variables being set matches the array length.  For \java{EncodingUtils.setBinary}, ensure the number of bits expressed in the binary variable matches the array length.
\end{indented}

\noindent
\textit{lambda function is not valid}
\begin{indented}
  In genetic programming, a lambda function was created with an invalid body. The body of a lambda function must be fully defined and strongly typed.  If not, this exception is thrown.  Check the definition of the lambda function and ensure all arguments are non-null and are of the correct type.  Check the error output to see if any warning messages were printed that detail the cause of this exception.
\end{indented}

\noindent
\textit{index does not reference node in tree}
\begin{indented}
  Attempted to use one of the \java{node.getXXXAt()} methods, but the index referred to a node not within the tree.  This is similar to an out-of-bounds exception, as the index pointed to a node outside the tree.  Ensure the index is valid.
\end{indented}

\noindent
\textit{malformed property argument}
\begin{indented}
  The \java{Evaluator} and \java{Solve} command line utilities support setting algorithm parameters on the command line with the -x option.  The parameters should be of the form:
  \begin{indented}
    \plaintext{-x name=value}
  \end{indented}
  or if multiple parameters are set:
  \begin{indented}
    \plaintext{-x name1=value1;name2=value2;name3=value3}
  \end{indented}
  This error is thrown if the command line argument is not in either of these two forms.  Check the command line argument to ensure it is formatted correctly.
\end{indented}

\noindent
\textit{key not defined in accumulator: \plaintext{<key>}}
\begin{indented}
  Thrown when attempting to access a key in an \java{Accumulator} object that is not contained within the \java{Accumulator}.  Use \java{accumulator.keySet()} to see what keys are available and ensure the requested key exists within the accumulator.
\end{indented}

\noindent
\textit{an unclean version of the file exists from a previous run, requires manual intervention}
\begin{indented}
  Thrown when \java{ResultFileWriter} or \java{MetricFileWriter} attempt to recover data from an interrupted run, but it appears there already exists an ``unclean'' file from a previous recovery attempt.  If the user believes the unclean file contains valid data, she can copy the unclean file to its original location.  Or, she can delete the unclean file to start fresh.  The \plaintext{org.moeaframework.analysis.sensitivity.cleanup} property in \file{global.properties} controls the default behavior in this scenario.
\end{indented}

\noindent
\textit{requires at least two solutions} or
\textit{objective with empty range}
\begin{indented}
  These two exceptions are thrown when using the Normalizer with a degenerate population.  A degenerate population either has fewer than two solutions or the range of any objective is below computer precision.  In this scenario, the population can not be normalized.
\end{indented}

\noindent
\textit{lower bound and upper bounds not the same length}
\begin{indented}
  When specifying the \plaintext{--lowerBounds} and \plaintext{--upperBounds} arguments to the \java{Solve} utility, the number of values in the comma-separated list must match.
\end{indented}

\noindent
\textit{invalid variable specification <value>, not properly formatted}
\textit{invalid real specification <value>, expected R(<lb>,<ub>)}
\textit{invalid binary specification <value>, expected B(<length>)}
\textit{invalid permutation specification <value>, expected P(<length>)}
\textit{invalid variable specification <value>, unknown type}
\begin{indented}
  The \plaintext{--variables} argument to the \java{Solve} utility allows specifying the types and ranges of the decision variables.  These error messages indicate that one or more of the variable specifications is invalid.  The message will identify the problem.  An example variable specification is provided below:
  \begin{indented}
    \plaintext{--variables "R(0;1),B(5),P(10),R(-1;1)"}
  \end{indented}
  Also, always surround the argument with quotes as shown in this example.
\end{indented}

\noindent
\textit{must specify either the problem, the variables, or the lower and upper bounds arguments}
\begin{indented}
  The \java{Solve} command line utility operates on both problems defined within the MOEA Framework (by name) or problems external to the MOEA Framework, such as an executable.  For problems identified by name, the \plaintext{--problem} argument must be specified.  For external problems, (1) if the problem is real-valued, you can use the \plaintext{--lowerBounds} and \plaintext{--upperBounds} arguments; or (2) use the \plaintext{--variables} argument to specify the decision variables and their types.
\end{indented}





\section{Warnings}
Warnings are messages printed to the standard error stream (i.e., the console) that indicate an abnormal or unsafe condition.  While warnings do not indicate an error occurred, they do indicate caution is required by the user.
\vspace{\baselineskip}

\noindent
\textit{no digest file exists to validate \plaintext{<FILE>}}
\begin{indented}
  Attempted to validate the file but no digest file exists.  This indicates that the framework could not verify the authenticity of the file.
\end{indented}
  
\noindent
\textit{saving result file without variables, may become unstable}
\begin{indented}
  Occurs when writing a result file with the output of decision variables suppressed.  The suppression of decision variable output is a user-specified option.  The warning ``may become unstable'' indicates that further use of the result file may result in unexpected errors if the decision variables are required.
\end{indented}
  
\noindent
\textit{unsupported decision variable type, may become unstable}
\begin{indented}
  Occurs when reading or writing result files which use unsupported decision variable types.  When this occurs, the program is unable to read or write the decision variable, and its value is therefore lost.  The warning ``may become unstable'' indicates that further use of the result file may result in unexpected errors if the decision variables are required.
\end{indented}
  
\noindent
\textit{duplicate solution found}
\begin{indented}
  Issued by \java{ReferenceSetMerger} if any of the algorithms contribute identical solutions.  If this warning is emitted, the contribution of each algorithm to the reference set is invalid.  Use SetContribution instead to compute the contribution of overlapping sets to a reference set.
\end{indented}
  
\noindent
\textit{can not initialize unknown type}
\begin{indented}
  Emitted by \java{RandomInitialization} if the problem uses unsupported decision variable types.  The algorithm will continue to run, but the unsupported decision variables will remain initialized to their default values.
\end{indented}

\noindent
\textit{an error occurred while writing the state file} or\\
\textit{an error occurred while reading the state file}
\begin{indented}
  Occurs when checkpoints are enabled, but the algorithm does not support checkpoints or an error occurred while reading or writing the checkpoint.  The execution of the algorithm will continue normally, but no checkpoints will be produced.
\end{indented}
  
\noindent
\textit{multiple constraints not supported, aggregating into first constraint}
\begin{indented}
  Occurs when an algorithm implementation does not support multiple constraints. This occurs primarily with the JMetal library, which only uses a single aggregate constraint violation value.  When translating between JMetal and the MOEA Framework, the first objective in the MOEA Framework is assigned the aggregate constraint violation value; the remaining objectives become 0.
\end{indented}

\noindent
\textit{increasing MOEA/D population size}
\begin{indented}
  The population size of MOEA/D must be at least the number of objectives of the problem.  If not, the population size is automatically increased.
\end{indented}
  
\noindent
\textit{checkpoints not supported when running multiple seeds}
\begin{indented}
  Emitted by the \java{Executor} when the \java{withCheckpointFile(...)} and \java{accumulateAcrossSeeds(...)} options are both used.  Checkpoints are only supported for single-seed evaluation.  The \java{Executor} will continue without checkpoints.
\end{indented}
  
\noindent
\textit{checkpoints not supported by algorithm}
\begin{indented}
  Emitted by the \java{Executor} if the algorithm is not Resumable (i.e., does not support checkpoints).  The Executor will continue without checkpoints.
\end{indented}
  
\noindent
\textit{Provider org.moeaframework.algorithm.jmetal.JMetalAlgorithms could not be instantiated: java.lang.NoClassDefFoundError: \plaintext{<class>}}
\begin{indented}
  This warning occurs when attempting to instantiate the JMetal algorithm provider, but the JMetal library could not be found on the classpath.  This is treated as a warning and not an exception since a secondary provider may exist for the specified algorithm.  If no secondary provider exists, a \java{ProviderNotFoundException} will be thrown.  To correct, obtain the latest JMetal library from \webpage{http://jmetal.sourceforge.net/} and list it on the  classpath as follows:
  \begin{indented}
    \plaintext{java -classpath "\$CLASSPATH:/path/to/JMetal.jar"}
  \end{indented}
  Also ensure you are using the correct classpath separator.  Linux users will use the colon (:) as the above example demonstrates.  Windows and Cygwin users should use the
  semi-colon (;).
\end{indented}
    
\noindent
\textit{unable to negate values in \plaintext{<file>}, incorrect number of values in a row}
\begin{indented}
  Emitted by the \java{Negater} command line utility when one of the files it is processing contains an invalid number of values in a row.  The file is expected to contain the same number of values in a row as values passed to the \plaintext{-d,--direction} command line argument.  The file will not be modified if this issue is detected.
\end{indented}

\noindent
\textit{unable to negate values in \plaintext{<file>}, unable to parse number}
\begin{indented}
  Emitted by the \java{Negater} command line utility when one of the files it is processing encounters a value it is unable to parse.  The columns being negated must be numeric values.  The file will not be modified if this issue is detected.
\end{indented}

\noindent
\textit{argument is null} or\\
\textit{\plaintext{<class>} not assignable from \plaintext{<class>}}
\begin{indented}
  When validating an expression tree using the \java{node.isValid()} method, details identifying why the tree is invalid are printed.  The warning ``argument is null'' indicates the tree is incomplete and contains a missing argument. Check to ensure all arguments of all nodes within the tree are non-null. The warning ``\plaintext{<class>} not assignable from \plaintext{<class>}'' indicates the required type of an argument did not match the return type of the argument.  If this warning appears when using \java{Sequence}, \java{For} or \java{While} nodes, ensure you specify the return type of these nodes using the appropriate constructor.
\end{indented}

\noindent
\textit{unable to parse solution, ignoring remaining entries in the file} or\\
\textit{insufficient number of entries in row, ignoring remaining rows in the file}
\begin{indented}
  Occurs when \java{MetricFileReader} or \java{ResultFileReader} encounter invalid data in an input file.  They automatically discard any remaining entries in the file, assuming they are corrupt.  This is primarily intended to allow the software to automatically recover from a previous, interrupted execution. These warnings are provided to inform the user that invalid entries are being discarded.
\end{indented}

\noindent
\textit{Unable to find the file <file>}
\begin{indented}
  This warning is shown when running an example that must load a data file but the data file could not be found.  Ensure that the examples directory is located on your classpath:
  \begin{indented}
    \plaintext{java -classpath "\$CLASSPATH:examples" ...}
  \end{indented}
  Also ensure you are using the correct classpath separator.  Linux users will use the colon (:) as the above example demonstrates.  Windows and Cygwin users should use the semi-colon (;).
\end{indented}

\noindent
\textit{incorrect number of names, using defaults}
\begin{indented}
  Occurs when using the \plaintext{--names} argument provided by \java{ARFFConverter} and \java{AerovisConverter} to provide custom names for the decision variables and/or objectives, but the number of names provided is not correct.  When providing names for only the objectives, the number of names must match the number of objectives.  When providing names for both variables and objectives, the number of names must match the number of variables and objectives in the data file.  Otherwise, this warning is displayed and the program uses default names.
\end{indented}

\noindent
\textit{population is empty, can not generate ARFF file}
\begin{indented}
  The \java{ARFFConverter} outputs an ARFF file using the last entry in a result file.  If the last entry is empty, then no ARFF file is generated.
\end{indented}
